package chapter02

import (
	"fmt"
	"github.com/gin-gonic/gin"
	"net/http"
	"strconv"
	"time"
)

//上传单个文件
func ToUpload(ctx *gin.Context) {
	ctx.HTML(http.StatusOK, "test_upload.html", nil)
}

func DoUpload(ctx *gin.Context) {
	file, _ := ctx.FormFile("file")                       //读取前端上传的文件名 单个
	fmt.Println(file.Filename)                            //打印前端上传的文件名
	time_unix_int := time.Now().Unix()                    //时间戳  防止上传相同文件覆盖
	time_unix_str := strconv.FormatInt(time_unix_int, 10) //一个整型  一个进制类型
	dst := "upload/" + time_unix_str + file.Filename      //路径+时间戳+文件名
	ctx.SaveUploadedFile(file, dst)                       //保存前端上传的文件到指定路径
	ctx.String(http.StatusOK, "上传成功")
}

//上传多个文件
func ToUpload1(ctx *gin.Context) {
	ctx.HTML(http.StatusOK, "test_upload1.html", nil)
}

func DoUpload1(ctx *gin.Context) {

	form, _ := ctx.MultipartForm() //以map的形式接收多个文件
	files := form.File["file"]     //以key value的形式保存文件

	for _, file := range files { //循环遍历map 只输出文件
		fmt.Println(file.Filename)                            //打印前端上传的文件名
		time_unix_int := time.Now().Unix()                    //时间戳  防止上传相同文件覆盖
		time_unix_str := strconv.FormatInt(time_unix_int, 10) //一个整型  一个进制类型
		dst := "upload/" + time_unix_str + file.Filename      //路径+时间戳+文件名
		ctx.SaveUploadedFile(file, dst)                       //保存前端上传的文件到指定路径
	}
	ctx.String(http.StatusOK, "上传成功")
}
